#include "Util.hpp"

#include <cstring>

int main()
{
    setNonBlock(0); // 设置为非阻塞IO
    char buf[1024];
    while (1)
    {
        int n = read(0, buf, sizeof(buf) - 1);
        if (n > 0) // 读到数据
        {
            buf[n] = 0;
            std::cout << "echo: " << buf << std::endl;
        }
        else if (n == 0) // 读取结束
        {
            std::cout << "读取结束" << std::endl;
            break;
        }
        else // 读取出错或非阻塞时没数据均返回-1，要通过错误码errno做区分
        {
            if (errno == EAGAIN || errno == EWOULDBLOCK) // 无数据可读
            {
                std::cout << "没有出错，只是没有数据可读" << std::endl;
                //...执行其他任务
                std::cout << "其他任务函数" << std::endl;
            }
            else if (errno == EINTR) // 读取时被信号中断，不是出差，继续读即可
            {
                continue;
            }
            else // 出错
            {
                std::cout << "errno: " << strerror(errno) << std::endl;
                exit(2);
            }
        }
        sleep(1);
    }
    return 0;
}